package com.mine.modules.vm.service;

import com.mine.common.domain.vo.Result;
import com.mine.modules.sys.domain.dto.RoleDto;
import com.mine.modules.vm.domain.dto.*;
import com.mine.modules.vm.domain.query.CountElementQuery;
import com.mine.modules.vm.domain.query.LayerQuery;
import com.mine.modules.vm.entity.VmLayer;
import com.baomidou.mybatisplus.extension.service.IService;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * <p>
 * 场景菜单 服务类
 * </p>
 *
 * @author author
 * @since 2024-10-15
 */
public interface IVmLayerService extends IService<VmLayer> {

    Result<?> listAll(LayerQuery layerQuery);

    Result<?> listByParentId(LayerQuery layerQuery);

    Result<?> getMenuLayerByToken(LayerQuery layerQuery);

    Result<?> getMenuLayerListByToken(LayerQuery layerQuery);

    Result<?> addOrEdit(VmLayerDto layerDto);

    Result<?> delete(String id);

    Result<?> deleteBatch(String ids);

    Result<List<String>> queryRoleLayer(String roleId);

    Result<?> saveRoleLayer(RoleDto roleDto);

    Result<List<String>> queryMenuLayer(String menuId);

    Result<?> saveMenuLayer(MenuLayerDto menuLayerDto);

    Result<?> batchAddElement(BatchAddElementDto batchAddElementDto) throws ClassNotFoundException;

    Result<?> batchDeleteElement(BatchDeleteElementDto batchDeleteElementDto);

    List<String> getElementIdsByType(String elementType);

    Result<?> elementListByLayerId(ElementByLayerDto elementByLayerDto);

    Result<?> bindSceneLayer(String layerId, String sceneLayerId);

    Result<?> bindPointLayer(String layerId, String pointLayerId);

    Result<?> bindElementSceneLayer(String elementSId, String sceneLayerId) throws ClassNotFoundException;

    Result<?> getCountByLayerId(CountElementQuery countElementQuery);

    List<String> getAllSubIdsByParentId(String parentId);

    Result<?> copyLayer(String sourceLayerId, String targetParentId);

}
